
from goods.models import GoodsChannel

# TODO: 用来构造主页静态化用于渲染三级分类导航的模版参数
def get_categories():

    categories = {}

    # 根据group_id生序排列
    channels = GoodsChannel.objects.order_by('group_id', 'sequence')
    # 遍历所有的频道
    for channel in channels:
        # channel是当前分组的关联的一个频道对象
        if channel.group_id not in categories:
            # if判断，成立，表示第一次添加当前分组频道
            categories[channel.group_id] = {
                "channels": [], # 当前分组的频道信息
                "sub_cats": [] # 关联的二级分类
            }

        # 补充当前分组的频道信息
        categories[channel.group_id]['channels'].append({
            'id': channel.id,
            'url': channel.url,
            'name': channel.category.name, # 频道关联一级分类名称
        })

        # 获取当前频道关联的一级分类对象
        cat1 = channel.category

        # 补充商品二级分类
        cat2s = cat1.subs.all()
        for cat2 in cat2s:
            # cat2是每一个二级分类对象
            cat3_list = []
            # 补充商品三级分类信息
            cat3s = cat2.subs.all()
            for cat3 in cat3s:
                cat3_list.append({
                    'id': cat3.id,
                    'name': cat3.name
                })

            categories[channel.group_id]['sub_cats'].append({
                'id': cat2.id,
                'name': cat2.name,
                'sub_cats': cat3_list # 三级分类信息
            })

    return categories












